In constraint processing, relations between variables may be defined in the form of constraints. Constraints differ from imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. This makes constraint processing a form of declarative programming. The constraints used in constraint processing are of various kinds: those used in constraint satisfaction problems (e.g. “A or B is true”), linear inequalities (e.g. “x≤5”), and others. Constraint processing identifying feasible solutions out of a very large set of values. As constraints are applied to the variables, a number of values are removed that have been determined to be incompatible with the other available values in the model. Constraints are usually embedded within a programming language or provided via separate software libraries.